AWS WAFを使って、特定のURLへの接続をブロックしてみた
はじめに
AWS WAFを使って、特定のURLへの接続をブロックしてみました。 特定拠点以外からの管理用ページへのアクセスを遮断します。
Webサーバーでは、以下のようにコンテンツを配置します。 index.htmlは一般公開し、kanriディレクトリ以下は特定拠点からのみ接続を許可します。
$ tree /var/www/html/ /var/www/html/ ├── index.html └── kanri ├── kanri1-2.html ├── kanri1.html └── kanri2 └── kanri2.html
AWS 構成
ALBにEC2を登録し、ALBにAWS WAFを登録します
AWS WAFの作成
ウェブ ACL "myWebACL"を作成します。 ルールのデフォルトアクションはAllowにします。 通信がルールに該当しない場合、許可されます。
ウェブ ACLに、ルール"Manage Page Restrictions Rule"を登録します。
URI.*/kanri*
に対して、特定IP以外からの接続があった場合にブロックします。
IP一致条件の作成
IP match conditionsを作成します。
条件の名前は、TrustIPAddressとしました。 ALBを配置したリージョンを選択します。 管理拠点など信頼できるIPアドレスを登録します。
文字列と正規表現一致条件の作成
String and regex match conditionsを作成します。
条件の名前は、Manage Page Restrictionsとしました。
TypeはRegex matchにします。
Filter settingsでは、"URI"を"URL decode"し、.*/kanri*
の一致を確認するパターンを登録します。
ルールの作成
ルールを作成します。
ルールの名前は、Manage Page Restrictionsとしました。 TrustIPAddressに一致しない(=信頼できない接続元)かつ、Manage Page Restrictionsに一致する(=管理ページのアクセス)に一致するかを確認します。
Web ACLの作成
Web ACLを作成します。
名前はmyWebACLとしました。 ALBのあるリージョンを指定し、Web ACLを割り当てるALBを選択します。
「Step 2: Create conditions」では、条件を作成します。 予め作成したため、Nextを選択します。
「Step 3: Create rules」では、ルールのアクションとデフォルトのアクションを指定します。 ルール"Manage Page Restrictions"に一致する場合、通信をブロックします。 ルールに一致しない場合、許可します。
動作確認
特定拠点から、kanri以下のページに接続すると、ページの内容を確認できます。
特定拠点以外から、kanri以下のページに接続すると、"403 Forbidden"になります。
さいごに
AWS WAFを使って、特定のURLへの接続をブロックしてみました。 特定拠点以外からの管理用ページへのアクセスを遮断しました。